;!function (win) {
    "use strict";
    var doc = document

        , Ladmin = function () {
        this.v = '2.2'; //版本号
    }
    Ladmin.prototype.init = function () {
        var tab_list = this.get_data();
        for (var i in tab_list) {
            this.add_lay_tab(tab_list[i].title, tab_list[i].url, i);
        }
        element.tabChange('xbs_tab', i);
    };
    /**
     * [end 执行结束要做的]
     * @return {[type]} [description]
     */
    Ladmin.prototype.end = function () {

        var cate_list = this.get_cate_data();

        for (var i in cate_list) {
            if (cate_list[i] != null) {
                $('.left-nav #nav li').eq(cate_list[i]).click();
            }
        }
    };

    Ladmin.prototype.add_tab = function (title, url, is_refresh) {
        var id = md5(url);//md5每个url

        //重复点击
        for (var i = 0; i < $('.x-iframe').length; i++) {
            if ($('.x-iframe').eq(i).attr('tab-id') == id) {
                element.tabChange('xbs_tab', id);
                if (is_refresh)
                    $('.x-iframe').eq(i).attr("src", $('.x-iframe').eq(i).attr('src'));
                return;
            }
        }
        ;

        this.add_lay_tab(title, url, id);
        this.set_data(title, url, id);
        element.tabChange('xbs_tab', id);

    }

    Ladmin.prototype.del_tab = function (id) {

        if (id) {
            parent.element.tabDelete('xbs_tab', id);
        } else {
            var id = $(window.frameElement).attr('tab-id');
            parent.element.tabDelete('xbs_tab', id);
        }
    }

    Ladmin.prototype.add_lay_tab = function (title, url, id) {
        element.tabAdd('xbs_tab', {
            title: title
            ,
            content: '<iframe tab-id="' + id + '" frameborder="0" src="' + url + '" scrolling="yes" class="x-iframe"></iframe>'
            ,
            id: id
        })
    }
    /**
     * [close 关闭弹出层父窗口关闭]
     * @return {[type]} [description]
     */
    Ladmin.prototype.father_reload = function () {
        parent.location.reload();
    };
    /**
     * [get_data 获取所有项]
     * @return {[type]} [description]
     */
    Ladmin.prototype.get_data = function () {
        if (typeof is_remember != "undefined")
            return false;
        return layui.data('tab_list')
    }
    /**
     * [set_data 增加某一项]
     * @param {[type]} id [description]
     */
    Ladmin.prototype.set_data = function (title, url, id) {

        if (typeof is_remember != "undefined")
            return false;

        layui.data('tab_list', {
            key: id
            , value: {title: title, url: url}
        });
    };

    /**
     * [get_data 获取所有项]
     * @return {[type]} [description]
     */
    Ladmin.prototype.get_cate_data = function () {
        if (typeof is_remember != "undefined")
            return false;
        return layui.data('cate')
    }
    /**
     * [set_data 增加某一项]
     * @param {[type]} id [description]
     */
    Ladmin.prototype.set_cate_data = function (data) {

        if (typeof is_remember != "undefined")
            return false;

        layui.data('cate', data);
    };
    /**
     * [del_data 删除某一项]
     * @param  {[type]} id [description]
     * @return {[type]}    [description]
     */
    Ladmin.prototype.del_data = function (id) {
        if (typeof is_remember != "undefined")
            return false;
        if (typeof id != "undefined") {
            layui.data('tab_list', {
                key: id
                , remove: true
            });
        } else {
            layui.data('tab_list', null);
        }
    };
    /**
     * [del_other_data 删除其它]
     * @param  {[type]} id [description]
     * @return {[type]}    [description]
     */
    Ladmin.prototype.del_other_data = function (id) {
        if (typeof is_remember != "undefined")
            return false;
        var tab_list = this.get_data();

        layui.data('tab_list', null);

        layui.data('tab_list', {
            key: id
            , value: tab_list[id]
        });
    };
    win.Ladmin = new Ladmin();

}(window);

$(function () {
    //加载弹出层
    layui.use(['form', 'element', 'layer'], function () {
        layer = layui.layer;
        element = layui.element;
        // 切换tab刷新固定页面
        element.on('tab(xbs_tab)', function (data) {
            let src = $('.x-iframe').eq(data.index).attr('src');


        });
    });

    //触发事件
    tableCheck = {
        init: function () {
            $(".layui-form-checkbox").click(function (event) {
                if ($(this).hasClass('layui-form-checked')) {
                    $(this).removeClass('layui-form-checked');
                    if ($(this).hasClass('header')) {
                        $(".layui-form-checkbox").removeClass('layui-form-checked');
                    }
                } else {
                    $(this).addClass('layui-form-checked');
                    if ($(this).hasClass('header')) {
                        $(".layui-form-checkbox").addClass('layui-form-checked');
                    }
                }

            });
        },
        getData: function () {

        }
    }
    $(document).ready(function () {

        var innerHTML1 = document.getElementById('treatedImageTpl')
        if (innerHTML1) {
            let html = innerHTML1.innerHTML;
            if (html.indexOf('选择') == (-1)) {
                html1 = html.replace(/class="/g, 'class="layui-btn-text ');
                innerHTML1.innerHTML = html1
            }
        }
        var innerHTML2 = document.getElementById('treatedImageTpl1')
        if (innerHTML2) {
            let html = innerHTML2.innerHTML;
            html2 = html.replace(/class="/g, 'class="layui-btn-text ');
            innerHTML2.innerHTML = html2
        }
        var innerHTML3 = document.getElementById('barDemo')
        if (innerHTML3) {
            let html = innerHTML3.innerHTML;
            html3 = html.replace(/class="/g, 'class="layui-btn-text ');
            innerHTML3.innerHTML = html3
        }
        layui.use(['layer'], function () {
            layer = layui.layer;
            var flashLoad1;
            //登录状态失效,超时跳转
            $.ajaxSetup({
                beforeSend: function (XHR, response) {
                    flashLoad1 = layer.load(2); //0代表加载的风格，支持0-2
                },
                complete: function (XMLHttpRequest) {
                    layer.close(flashLoad1);
                    if (XMLHttpRequest.status == '200') {
                        var data = XMLHttpRequest.responseJSON;
                        if (data.code == '840') {
                            window.top.location.href = data.data.url;
                        }
                    }
                }
            })

        });
        //点击菜单显示效果	
        $('.left-nav #nav li .sub-menu li ').click(function () {
            $(this).addClass('menu-current').siblings().removeClass('menu-current');
        })
        //开启表格多选
        tableCheck.init();
    });
    // 隐藏左侧
    $('.container .left_open i').click(function (event) {
        if ($('.left-nav').css('left') == '0px') {
            $('.left-nav').animate({left: '-241px'}, 100);
            $('.page-content').animate({left: '0px'}, 100);
            $('.page-content-bg').hide();
        } else {
            $('.left-nav').animate({left: '0px'}, 100);
            $('.page-content').animate({left: '241px'}, 100);
            if ($(window).width() < 768) {
                $('.page-content-bg').show();
            }
        }

    });

    $('.page-content-bg').click(function (event) {
        $('.left-nav').animate({left: '-241px'}, 100);
        $('.page-content').animate({left: '0px'}, 100);
        $(this).hide();
    });

    $('.layui-tab-close').click(function (event) {
        $('.layui-tab-title li').eq(0).find('i').remove();
    });
    // 右键导航tab右键事件
    $(".layui-tab-title").on('contextmenu', 'li', function (event) {
        if ($(this).is('.home')) return;
        var tab_left = $(this).position().left;
        var tab_width = $(this).width();
        var left = $(this).position().top;
        var this_index = $(this).attr('lay-id');
        $('#tab_right').css({'left': tab_left + tab_width / 2}).show().attr('lay-id', this_index);
        $('#tab_show').show();
        return false;
    });
    //关闭当前 关闭其它 关闭全部 
    $('#tab_right').on('click', 'dd', function (event) {
        var data_type = $(this).attr('data-type');
        var lay_id = $(this).parents('#tab_right').attr('lay-id');
        if (data_type == 'this') {
            $('.layui-tab-title li[lay-id=' + lay_id + ']').find('.layui-tab-close').click();
        } else if (data_type == 'other') {
            $('.layui-tab-title li').eq(0).find('.layui-tab-close').remove();
            $('.layui-tab-title li[lay-id!=' + lay_id + ']').find('.layui-tab-close').click();
        } else if (data_type == 'all') {
            $('.layui-tab-title li[lay-id]').find('.layui-tab-close').click();
        }
        $('#tab_right').hide();
        $('#tab_show').hide();
    })
    $('.page-content,#tab_show,.container,.left-nav').click(function (event) {
        $('#tab_right').hide();
        $('#tab_show').hide();
    });
    $("tbody.x-cate tr[fid!='0']").hide();
    // 栏目多级显示效果
    $('.x-show').click(function () {
        if ($(this).attr('status') == 'true') {
            $(this).html('&#xe625;');
            $(this).attr('status', 'false');
            cateId = $(this).parents('tr').attr('cate-id');
            $("tbody tr[fid=" + cateId + "]").show();
        } else {
            cateIds = [];
            $(this).html('&#xe623;');
            $(this).attr('status', 'true');
            cateId = $(this).parents('tr').attr('cate-id');
            getCateId(cateId);
            for (var i in cateIds) {
                $("tbody tr[cate-id=" + cateIds[i] + "]").hide().find('.x-show').html('&#xe623;').attr('status', 'true');
            }
        }
    })
    $('.left-nav #nav li').click(function (event) {
        if ($(this).children('.sub-menu').length) {
            if ($(this).hasClass('open')) {
                $(this).removeClass('open');
                $(this).find('.nav_right').html('&#xe6a7;');
                $(this).children('.sub-menu').stop().slideUp();
                $(this).siblings().children('.sub-menu').slideUp();

            } else {
                $(this).addClass('open');
                $(this).children('a').find('.nav_right').html('&#xe6a6;');
                $(this).children('.sub-menu').stop().slideDown();
                $(this).siblings().children('.sub-menu').stop().slideUp();
                $(this).siblings().find('.nav_right').html('&#xe6a7;');
                $(this).siblings().removeClass('open');
            }
        } else {
            var url = $(this).children('a').attr('_href');
            var title = $(this).find('cite').html();
            parent.Ladmin.add_tab(title, url);
            localStorage.setItem('updateReserve', getNowFormatDate())
        }
        event.stopPropagation();

    })
    //点击页面内a标签跳转页面的控制
    $('.layui-table .td-manage a').click(function (event) {
        var url = $(this).attr('_href');
        if (url) {
            var title = $(this).attr('data-title');
            parent.Ladmin.add_tab(title, url, true)
        }

    });

});
var cateIds = [];

function getCateId(cateId) {

    $("tbody tr[fid=" + cateId + "]").each(function (index, el) {
        id = $(el).attr('cate-id');
        cateIds.push(id);
        getCateId(id);
    });
}

/*打开弹出层*/

/*
    参数解释：
    title   标题
    url     请求的url
    id      需要操作的数据id
    w       弹出层宽度（缺省调默认值）
    h       弹出层高度（缺省调默认值）
*/
function x_admin_show(title, url, w, h, success, btn, yes) {
    if (title == null || title == '') {
        title = false;
    }
    ;
    if (url == null || url == '') {
        url = "404.html";
    }
    ;
    if (w == null || w == '') {
        w = ($(window).width() * 0.9);
    }
    ;
    if (h == null || h == '') {
        h = ($(window).height() - 50);
    }
    ;
    layer.open({
        type: 2,
        title: title,
        content: url,
        maxmin: true,
        area: [w + 'px', h + 'px'],
        fix: false, //不固定
        shadeClose: false,
        shade: 0.4,
        success: success,
        btn: btn,
        yes: yes
    });
}

/*关闭弹出框口*/
function x_admin_close() {
    var index = parent.layer.getFrameIndex(window.name);
    parent.layer.close(index);
}

//获取url参数
function RequestParameter() {
    var url = window.location.search; //获取url中"?"符后的字串
    var theRequest = new Object();
    if (url.indexOf("?") != -1) {
        var str = url.substr(1);
        var strs = str.split("&");
        for (var i = 0; i < strs.length; i++) {
            theRequest[strs[i].split("=")[0]] = (strs[i].split("=")[1]);
        }
    }
    return theRequest
}

// 获取年月日
function getNowFormatDate() {
    var date = new Date();
    var seperator1 = "-";
    var year = date.getFullYear();
    var month = date.getMonth() + 1;
    var strDate = date.getDate();
    if (month >= 1 && month <= 9) {
        month = "0" + month;
    }
    if (strDate >= 0 && strDate <= 9) {
        strDate = "0" + strDate;
    }
    var currentdate = year + seperator1 + month + seperator1 + strDate;
    return currentdate;
}

function formatDate(date, type) {
    var date = new Date(date);
    if (!type) {
        type = 'yyyy-mm-dd hh:ii:ss'
    }
    var o = {
        "m+": date.getMonth() + 1,	//月份
        "d+": date.getDate(),		//日
        "h+": date.getHours(),		//小时
        "i+": date.getMinutes(),	//分
        "s+": date.getSeconds(),	//秒
    };
    if (/(y+)/.test(type)) {
        type = type.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
    }
    ;
    for (var k in o) {
        if (new RegExp("(" + k + ")").test(type)) {
            type = type.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
        }
        ;
    }
    return type;
}

// md5-----------------------------------------------------------------------------------
/*
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
* to work around bugs in some JS interpreters.
*/
function safeAdd(x, y) {
    var lsw = (x & 0xffff) + (y & 0xffff)
    var msw = (x >> 16) + (y >> 16) + (lsw >> 16)
    return (msw << 16) | (lsw & 0xffff)
}

/*
* Bitwise rotate a 32-bit number to the left.
*/
function bitRotateLeft(num, cnt) {
    return (num << cnt) | (num >>> (32 - cnt))
}

/*
* These functions implement the four basic operations the algorithm uses.
*/
function md5cmn(q, a, b, x, s, t) {
    return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b)
}

function md5ff(a, b, c, d, x, s, t) {
    return md5cmn((b & c) | (~b & d), a, b, x, s, t)
}

function md5gg(a, b, c, d, x, s, t) {
    return md5cmn((b & d) | (c & ~d), a, b, x, s, t)
}

function md5hh(a, b, c, d, x, s, t) {
    return md5cmn(b ^ c ^ d, a, b, x, s, t)
}

function md5ii(a, b, c, d, x, s, t) {
    return md5cmn(c ^ (b | ~d), a, b, x, s, t)
}

/*
* Calculate the MD5 of an array of little-endian words, and a bit length.
*/
function binlMD5(x, len) {
    /* append padding */
    x[len >> 5] |= 0x80 << (len % 32)
    x[((len + 64) >>> 9 << 4) + 14] = len

    var i
    var olda
    var oldb
    var oldc
    var oldd
    var a = 1732584193
    var b = -271733879
    var c = -1732584194
    var d = 271733878

    for (i = 0; i < x.length; i += 16) {
        olda = a
        oldb = b
        oldc = c
        oldd = d

        a = md5ff(a, b, c, d, x[i], 7, -680876936)
        d = md5ff(d, a, b, c, x[i + 1], 12, -389564586)
        c = md5ff(c, d, a, b, x[i + 2], 17, 606105819)
        b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330)
        a = md5ff(a, b, c, d, x[i + 4], 7, -176418897)
        d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426)
        c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341)
        b = md5ff(b, c, d, a, x[i + 7], 22, -45705983)
        a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416)
        d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417)
        c = md5ff(c, d, a, b, x[i + 10], 17, -42063)
        b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162)
        a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682)
        d = md5ff(d, a, b, c, x[i + 13], 12, -40341101)
        c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290)
        b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329)

        a = md5gg(a, b, c, d, x[i + 1], 5, -165796510)
        d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632)
        c = md5gg(c, d, a, b, x[i + 11], 14, 643717713)
        b = md5gg(b, c, d, a, x[i], 20, -373897302)
        a = md5gg(a, b, c, d, x[i + 5], 5, -701558691)
        d = md5gg(d, a, b, c, x[i + 10], 9, 38016083)
        c = md5gg(c, d, a, b, x[i + 15], 14, -660478335)
        b = md5gg(b, c, d, a, x[i + 4], 20, -405537848)
        a = md5gg(a, b, c, d, x[i + 9], 5, 568446438)
        d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690)
        c = md5gg(c, d, a, b, x[i + 3], 14, -187363961)
        b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501)
        a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467)
        d = md5gg(d, a, b, c, x[i + 2], 9, -51403784)
        c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473)
        b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734)

        a = md5hh(a, b, c, d, x[i + 5], 4, -378558)
        d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463)
        c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562)
        b = md5hh(b, c, d, a, x[i + 14], 23, -35309556)
        a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060)
        d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353)
        c = md5hh(c, d, a, b, x[i + 7], 16, -155497632)
        b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640)
        a = md5hh(a, b, c, d, x[i + 13], 4, 681279174)
        d = md5hh(d, a, b, c, x[i], 11, -358537222)
        c = md5hh(c, d, a, b, x[i + 3], 16, -722521979)
        b = md5hh(b, c, d, a, x[i + 6], 23, 76029189)
        a = md5hh(a, b, c, d, x[i + 9], 4, -640364487)
        d = md5hh(d, a, b, c, x[i + 12], 11, -421815835)
        c = md5hh(c, d, a, b, x[i + 15], 16, 530742520)
        b = md5hh(b, c, d, a, x[i + 2], 23, -995338651)

        a = md5ii(a, b, c, d, x[i], 6, -198630844)
        d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415)
        c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905)
        b = md5ii(b, c, d, a, x[i + 5], 21, -57434055)
        a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571)
        d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606)
        c = md5ii(c, d, a, b, x[i + 10], 15, -1051523)
        b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799)
        a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359)
        d = md5ii(d, a, b, c, x[i + 15], 10, -30611744)
        c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380)
        b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649)
        a = md5ii(a, b, c, d, x[i + 4], 6, -145523070)
        d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379)
        c = md5ii(c, d, a, b, x[i + 2], 15, 718787259)
        b = md5ii(b, c, d, a, x[i + 9], 21, -343485551)

        a = safeAdd(a, olda)
        b = safeAdd(b, oldb)
        c = safeAdd(c, oldc)
        d = safeAdd(d, oldd)
    }
    return [a, b, c, d]
}

/*
* Convert an array of little-endian words to a string
*/
function binl2rstr(input) {
    var i
    var output = ''
    var length32 = input.length * 32
    for (i = 0; i < length32; i += 8) {
        output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff)
    }
    return output
}

/*
* Convert a raw string to an array of little-endian words
* Characters >255 have their high-byte silently ignored.
*/
function rstr2binl(input) {
    var i
    var output = []
    output[(input.length >> 2) - 1] = undefined
    for (i = 0; i < output.length; i += 1) {
        output[i] = 0
    }
    var length8 = input.length * 8
    for (i = 0; i < length8; i += 8) {
        output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32)
    }
    return output
}

/*
* Calculate the MD5 of a raw string
*/
function rstrMD5(s) {
    return binl2rstr(binlMD5(rstr2binl(s), s.length * 8))
}

/*
* Calculate the HMAC-MD5, of a key and some data (raw strings)
*/
function rstrHMACMD5(key, data) {
    var i
    var bkey = rstr2binl(key)
    var ipad = []
    var opad = []
    var hash
    ipad[15] = opad[15] = undefined
    if (bkey.length > 16) {
        bkey = binlMD5(bkey, key.length * 8)
    }
    for (i = 0; i < 16; i += 1) {
        ipad[i] = bkey[i] ^ 0x36363636
        opad[i] = bkey[i] ^ 0x5c5c5c5c
    }
    hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8)
    return binl2rstr(binlMD5(opad.concat(hash), 512 + 128))
}

/*
* Convert a raw string to a hex string
*/
function rstr2hex(input) {
    var hexTab = '0123456789abcdef'
    var output = ''
    var x
    var i
    for (i = 0; i < input.length; i += 1) {
        x = input.charCodeAt(i)
        output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f)
    }
    return output
}

/*
* Encode a string as utf-8
*/
function str2rstrUTF8(input) {
    return unescape(encodeURIComponent(input))
}

/*
* Take string arguments and return either raw or hex encoded strings
*/
function rawMD5(s) {
    return rstrMD5(str2rstrUTF8(s))
}

function hexMD5(s) {
    return rstr2hex(rawMD5(s))
}

function rawHMACMD5(k, d) {
    return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d))
}

function hexHMACMD5(k, d) {
    return rstr2hex(rawHMACMD5(k, d))
}

function md5(string, key, raw) {
    if (!key) {
        if (!raw) {
            return hexMD5(string)
        }
        return rawMD5(string)
    }
    if (!raw) {
        return hexHMACMD5(key, string)
    }
    return rawHMACMD5(key, string)
}


// //重写layui的Ajax请求
// if (!(typeof layui == "undefined")) {
//     layui.use(['layer', 'jquery'], function () {
//         var layer = layui.layer,
//             $ = layui.jquery;
//         //首先备份下jquery的ajax方法
//         var _ajax = $.ajax;
//         //重写jquery的ajax方法
//         var flashLoad;
//         $.ajax = function (opt) {
//             //备份opt中error和success方法
//             var fn = {
//                 error: function (XMLHttpRequest, textStatus, errorThrown) {
//                 },
//                 success: function (data, textStatus) {
//                 }
//             }
//             if (opt.error) {
//                 fn.error = opt.error;
//             }
//             if (opt.success) {
//                 fn.success = opt.success;
//             }
//             //扩展增强处理
//             var _opt = $.extend(opt, {
//                 error: function (XMLHttpRequest, textStatus, errorThrown) {
//                     //错误方法增强处理
//                     if ('TIMEOUT' == XMLHttpRequest.getResponseHeader('SESSIONS_TATUS')) {
//                         parent.window.parent.window.location.href = XMLHttpRequest.getResponseHeader('content_path');
//                     }
//                     fn.error(XMLHttpRequest, textStatus, errorThrown);
//                 },
//                 success: function (data, textStatus) {
//                     //成功回调方法增强处理
//                     // if (-1 == data.status || '-1' == data.status || 0 == data.status || '0' == data.status) {
//                     //     return layer.msg(data.tip);
//                     // }
//                     fn.success(data, textStatus);
//                 },
//                 beforeSend: function (XHR, response) {
//                     debugger
//                     flashLoad = layer.load(2); //0代表加载的风格，支持0-2
//                 },
//                 complete: function (XHR, TS) {
//                     //请求完成后回调函数 (请求成功或失败之后均调用)。
//                     layer.close(flashLoad);
//                 }
//             });
//             return _ajax(_opt);
//         }
//     });
// };

/**
 * 公共ajax封装
 * url:接口地址
 * type:传输方式
 * showLoading:接口loading
 * params:接口入参
 * successfn:code为0函数
 * errorfn:code为其他情况
 * show_errtoast：code为其他 是否弹出提示
 * ifParent：提示弹出在父级
 * failfn：接口报错后的处理
 */
function ajax(url, type, showLoading, params, successfn, errorfn, show_errtoast, ifParent, failfn) {
    layui.use(['layer', 'jquery'], function () {
        var layer = layui.layer,
            $ = layui.jquery;

        //Object.assign 兼容IE
        if (typeof Object.assign != 'function') {
            Object.assign = function (target) {
                'use strict';
                if (target == null) {
                    throw new TypeError('Cannot convert undefined or null to object');
                }

                target = Object(target);
                for (var index = 1; index < arguments.length; index++) {
                    var source = arguments[index];
                    if (source != null) {
                        for (var key in source) {
                            if (Object.prototype.hasOwnProperty.call(source, key)) {
                                target[key] = source[key];
                            }
                        }
                    }
                }
                return target;
            };
        }

        // params = Object.assign(params, {
        //     isPc: '1'
        // })

        // if (params) {
        //     if (!params.token) {
        //         params = Object.assign(params, {
        //             token: localStorage.getItem('token')
        //         })
        //     }

        //     var globalUserId = localStorage.getItem('globalUserId')
        //     if (!params.globalUserId && globalUserId) {
        //         params = Object.assign(params, {
        //             globalUserId: globalUserId
        //         })
        //     }

        //     var userId = localStorage.getItem('userId')
        //     if (!params.userId && userId) {
        //         params = Object.assign(params, {
        //             userId: userId
        //         })
        //     }


        // }

        if (!url) {
            return
        }

        $.ajax({
            url: url,
            type: type,
            // data: JSON.stringify(params),
            data: params,
            dataType: 'json',
            beforeSend: function (res) {
                // beforefn(res)
                if (showLoading) {
                    layer.msg("加载中", {
                        icon: 16,
                        time: -1
                    })
                }

            },
            success: function (res) {
                if (showLoading) {
                    layer.closeAll()
                }
                if (res.code === 0 || res.code === '0') {
                    typeof successfn == "function" && successfn(res);
                } else if (res.code === 702) { //被踢，弹出登录
                    localStorage.removeItem('token');
                    localStorage.removeItem('globalUserId');
                    localStorage.removeItem('userId');
                    window.top.location.href = '/login.html';
                    return false;
                } else if (res.code === 705) { //token过期，弹出登录
                    localStorage.removeItem('token');
                    localStorage.removeItem('globalUserId');
                    localStorage.removeItem('userId');
                    window.top.location.href = '/login.html';
                    return false;
                } else { // 其他失败情况
                    // if (show_errtoast) {
                    if (ifParent) {
                        parent.layui.layer.msg(res.msg);
                    } else {
                        layer.msg(res.msg)
                    }
                    // }
                    typeof errorfn == "function" && errorfn(res);

                }
            },
            error: function (res) {
                if (showLoading) {
                    layer.closeAll()
                }
                if (typeof failfn == "function") {
                    failfn(res);
                } else {
                    if (ifParent) {
                        parent.layui.layer.msg('网络错误，请重试！', {icon: 5})
                    } else {
                        layer.msg('网络错误，请重试！', {icon: 5})
                    }

                }
            },
            complete: function () {

            }
        });
    })

}

